package _99练习;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Random;

// 9.
// 9.1 产生一个4位随机字符串strA(大写疑问字母数字) 作为一个密码
// 创建一个破解线程，不断随机产生破解密码，打印显示，与strA比较，如果匹配时终止。
// 主线程 开启破解线程，等待破解线程结束，打印输出破解出来的密码

// 9.2 把破解过程中产生的尝试密码，写入到一个文件中

// *9.3 开启多个破解线程，同时随机产生破解密码。
// 只要其中一个破解出来,主程序打印破解出来的密码，程序结束

// *9.4 开启多个破解线程，同时破解密码。
// 只要其中一个破解出来,主程序打印破解出来的密码，程序结束

public class BreakCodeThread extends Thread{
	static boolean isfind = false;
	String breakcodestr = "";
	@Override
	public void run() {
		// TODO Auto-generated method stub
		String name = Thread.currentThread().getName();
		try {
			while(!isfind)
			{
				Writer w1 = new FileWriter("trycode.txt",true);
				String str = getRandomString(4);
				if(name.equals(str))
				{
					breakcodestr = str;
					isfind = true;
					break;
				}
				System.out.println("密码为:"+name+"  "+"破解密码为:"+str + "  "+"不匹配");
				w1.write(str+"\r\n");
				w1.close();
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
	
	 public  String getRandomString(int length){
	     String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	     Random random=new Random();
	     StringBuffer sb=new StringBuffer();
	     for(int i=0;i<length;i++){
	       int number=random.nextInt(62);
	       sb.append(str.charAt(number));
	     }
	     return sb.toString();
	 }
}